﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using com.creditos.be.liclSolcred;

namespace com.creditos.dao.sql.liclSolcred
{
    public class ProductoDAO
    {
        public static List<ProductoBE> ListarProductos(ProductoBE oProductoBE)
        {
            List<ProductoBE> lst = new List<ProductoBE>();
            Comando cmd = new Comando();
            cmd.CommandName = "PRC_ProductoSubProducto";
            cmd.AddParameter("@Accion", 1);
            lst = (List<ProductoBE>)ElManager.EjecutarStore<ProductoBE>(cmd, DataBase.CREDITO_WEB);
            return lst;
        }

        public static List<SubProductoBE> ListarSubProductos(ProductoBE oProductoBE)
        {
            List<SubProductoBE> lst = new List<SubProductoBE>();
            Comando cmd = new Comando();
            cmd.CommandName = "PRC_ProductoSubProducto";
            cmd.AddParameter("@Accion", 2);
            cmd.AddParameter("@prdCodProducto", oProductoBE.CodigoProducto);
            lst = (List<SubProductoBE>)ElManager.EjecutarStore<SubProductoBE>(cmd, DataBase.CREDITO_WEB);
            return lst;
        }

        public static long GuardarSolicitud(SolicitudBE oSolicitudBE)
        {
            Comando cmd = new Comando();
            cmd.CommandName = "PRC_ActualizarSolicitudCreditoPrestamo";
            cmd.AddParameter("@Accion", oSolicitudBE.Accion);
            cmd.AddParameter("@solNroSolicitud", oSolicitudBE.NumeroSolicitud);
            cmd.AddParameter("@solFecIngreso", oSolicitudBE.FechaIngreso);//es necesario enviar?
            cmd.AddParameter("@solCodTipoPersona", oSolicitudBE.TipoPersona);
            cmd.AddParameter("@solCodTipoCanalVenta", oSolicitudBE.CanalVenta);
            cmd.AddParameter("@solCodCanalVenta", 0);
            cmd.AddParameter("@solCodRepresentanteVenta", 0); // promotor? si es asi, no era cadena?
            cmd.AddParameter("@solCodAgencia", oSolicitudBE.Agencia);
            cmd.AddParameter("@solTipDocumento", oSolicitudBE.TipoDocumento);
            cmd.AddParameter("@solNroDocumento", oSolicitudBE.NumeroDocumento);
            cmd.AddParameter("@solCodProducto", oSolicitudBE.CodigoProducto);
            cmd.AddParameter("@solCodSubProducto", oSolicitudBE.CodigoSubProducto);
            cmd.AddParameter("@solCodTipoEmpleo", oSolicitudBE.TipoPersona);
            //cmd.AddParameter("@solCodGerenteAgencia", oSolicitudBE.CodigoJefeAgencia); eran cadenas en la version anterior
            //cmd.AddParameter("@solCodFuncionarioNegocio", oSolicitudBE.CodigoFuncionario); eran cadenas en la version anterior
            cmd.AddParameter("@solCodResponsableDepsa", 0);
            //cmd.AddParameter("@solFecAprobacion", );//sql
            //cmd.AddParameter("@solFecRechazo", oSolicitudBE.CodigoFuncionario);sql
            //cmd.AddParameter("@solFecActualizacion", oSolicitudBE.CodigoFuncionario);sql
            cmd.AddParameter("@solCodUsuarioRegistro", oSolicitudBE.UsuarioCreacion);
            //cmd.AddParameter("@solCodUsuarioAprobacion", oSolicitudBE.CodigoFuncionario);//sql
            //cmd.AddParameter("@solCodUsuarioRechazo", oSolicitudBE.CodigoFuncionario);//sql
            //cmd.AddParameter("@solFlgParametros", oSolicitudBE.); indicar a q se refiere
            //cmd.AddParameter("@solFlgBaseNegativa", oSolicitudBE.); indicar a q se refiere
            //cmd.AddParameter("@solFlgPosicionBanco", oSolicitudBE.CodigoFuncionario);
            //cmd.AddParameter("@solFlgScoring", oSolicitudBE.CodigoFuncionario);
            //cmd.AddParameter("@solFlgBuroCredito", oSolicitudBE.CodigoFuncionario);
            //cmd.AddParameter("@solFlgVerificacionDomicilio", oSolicitudBE.CodigoFuncionario);
            //cmd.AddParameter("@solFlgVerificacionTrabajo", oSolicitudBE.CodigoFuncionario);
            //cmd.AddParameter("@solFlgVerificacionComercial", oSolicitudBE.UsuarioCreacion);
            cmd.AddParameter("@solCodAnalistaCredito", oSolicitudBE.Analista);
            cmd.AddParameter("@solImpCapacidadCredito", oSolicitudBE.CapacidadCredito);
            //cmd.AddParameter("@solValRCI", oSolicitudBE.RCI);no son autocalculados desde el sp?
            //cmd.AddParameter("@solValRMA", oSolicitudBE.RMA);no son autocalculados desde el sp?
            //cmd.AddParameter("@solRatRMA", oSolicitudBE.);no son autocalculados desde el sp?
            //cmd.AddParameter("@solValScoring", oSolicitudBE);no son autocalculados desde el sp?
            cmd.AddParameter("@solCodEstadoSolicitud", oSolicitudBE.Estado);//es necesario q se envie?
            cmd.AddParameter("@solDesObservacion", oSolicitudBE.ObservacionesSolicitudes);

            #region Integrante
            //cmd.AddParameter("@intCodIntegrante", oSolicitudBE.CapacidadCredito); indicar valor 
            //cmd.AddParameter("@intTipIntegrante", oSolicitudBE.tipo); indicar valor 
            cmd.AddParameter("@intTipDocumento", oSolicitudBE.TipoDocumento);
            cmd.AddParameter("@intNroDocumento", oSolicitudBE.NumeroDocumento);
            cmd.AddParameter("@intCodTipoPersona", oSolicitudBE.TipoPersona);
            //cmd.AddParameter("@intNomDescripcion", oSolicitudBE.CapacidadCredito);indicar valor
            cmd.AddParameter("@intCodUsuarioRegistro", oSolicitudBE.UsuarioCreacion);
            cmd.AddParameter("@intCodUsuarioActualizacion", oSolicitudBE.UsuarioModificacion);
            #endregion

            #region Integrante Persona Natural
            //cmd.AddParameter("@ipnCodIntegrante", oSolicitudBE.);
            cmd.AddParameter("@ipnApePaterno", oSolicitudBE.ApellidoPaterno);
            cmd.AddParameter("@ipnApeMaterno", oSolicitudBE.ApellidoMaterno);
            cmd.AddParameter("@ipnApeCasado", oSolicitudBE.ApellidoCasada);
            cmd.AddParameter("@ipnNom1", oSolicitudBE.PrimerNombre);
            cmd.AddParameter("@ipnNom2", oSolicitudBE.SegundoNombre);
            cmd.AddParameter("@ipnCodNacionalidad", oSolicitudBE.Nacionalidad);
            cmd.AddParameter("@ipnCodSexo", oSolicitudBE.Sexo);
            cmd.AddParameter("@ipnCodEstadoCivil", oSolicitudBE.EstadoCivil);
            cmd.AddParameter("@ipnCodGradoInstruccion", oSolicitudBE.GradoInstruccion);
            //cmd.AddParameter("@ipnCodDepartamento", oSolicitudBE.CodigoDepartamento);
            //cmd.AddParameter("@ipnCodProvincia", oSolicitudBE.ObservacionesSolicitudes);
            //cmd.AddParameter("@ipnCodDistrito", oSolicitudBE.ObservacionesSolicitudes);
            cmd.AddParameter("@ipnDesDireccion", oSolicitudBE.DireccionDomicilio);
            cmd.AddParameter("@ipnDesDireccionReferencia", oSolicitudBE.ReferenciaDomicilio);
            cmd.AddParameter("@ipnDesCorreoElectronico", oSolicitudBE.Email1);
            cmd.AddParameter("@ipnNroTelefonoFijo", oSolicitudBE.TelefonoFijo);
            cmd.AddParameter("@ipnNroTelefonoMovil", oSolicitudBE.TelefonoMovil);
            cmd.AddParameter("@ipnCodCorrespondencia", oSolicitudBE.DireccionCorrespondencia);
            cmd.AddParameter("@ipnCodTiempoResidencia", oSolicitudBE.TiempoResidencia);
            cmd.AddParameter("@ipnCodTipoVivienda", oSolicitudBE.TipoVivienda);
            cmd.AddParameter("@ipnNroDependientes", oSolicitudBE.NumeroDependientes);
            cmd.AddParameter("@ipnCodProfesion", oSolicitudBE.Profesion);
            cmd.AddParameter("@ipnImpPatrimonioCasa", oSolicitudBE.PatrimonioInmuebles);
            cmd.AddParameter("@ipnImpPatrimonioAuto", oSolicitudBE.PatrimonioAutos);
            cmd.AddParameter("@ipnImpPatrimonioOtro", oSolicitudBE.PatrimonioOtros);
            cmd.AddParameter("@ipnCodUsuarioRegistro", oSolicitudBE.UsuarioCreacion);
            cmd.AddParameter("@ipnCodUsuarioActualizacion", oSolicitudBE.UsuarioModificacion);
            #endregion

            List<Int64> lstSolicitud = (List<Int64>)ElManager.EjecutarStore<Int64>(cmd, DataBase.CREDITO_WEB);
            Int64 nroSolicitud = 0;
            if (lstSolicitud.Count > 0)
            {
                nroSolicitud = lstSolicitud[0]; 
            }

            return nroSolicitud;
        }
    }
}
